
# -*- coding: utf-8 -*-

import debug

class SeBase(object):
    @debug.notoverrided
    def __init__(self, config=None):
        '''
            <TODO>
                コンフィグ読み込みや永続化が必要なストレージ接続を行う
        '''
        if config is not None:
            self.config = config

    @debug.notoverrided
    def get_frame_list_all(self, target, fext='.jpg'):
        '''
            <TODO>
                ストレージに保存されたフレームリストを返す
            target : カメラID
            return : パス、拡張子を含まないリスト(全件)
                ex)
                    target@YYYY-mm-ddTHH:MM:SS.ffffffZ
        '''
        return []

    @debug.notoverrided
    def get_frame_list_first(self, target, fext='.jpg'):
        '''
            <TODO>
                ストレージに保存されたフレームで一番古いものを返す
            target : カメラID
            return : パス、拡張子を含まないリスト(1件)
                ex)
                    target@YYYY-mm-ddTHH:MM:SS.ffffffZ
        '''
        return []

    @debug.notoverrided
    def get_frame_list_last(self, target, fext='.jpg'):
        '''
            <TODO>
                ストレージに保存されたフレームで一番新しいものを返す
            target : カメラID
            return : パス、拡張子を含まないリスト(1件)
                ex)
                    target@YYYY-mm-ddTHH:MM:SS.ffffffZ
        '''
        return []

    @debug.notoverrided
    def get_frame_list_range(self, target, query, fext='.jpg'):
        '''
            <TODO>
                ストレージに保存されたフレームの時間範囲で返す
            target : カメラID
            query  : list(termfrom, termto)
            return : パス、拡張子を含まないリスト(N件)
                ex)
                    target@YYYY-mm-ddTHH:MM:SS.ffffffZ
        '''
        return []

    @debug.notoverrided
    def save_frame(self, target, fileobj, fext='.jpg', uniqname=None, options={'async':False} ):
        '''
            <TODO>
                ストレージにフレームを保存する
            target   : カメラID
            fileobj  : 保存するオブジェクト
            uniqname : reserved
            options  : reserved
        '''
        pass

    @debug.notoverrided
    def get_frame(self, framestring, fext='.jpg'):
        '''
            <TODO>
                ストレージに格納されたフレームの実体を返す
            target      : カメラID
            framestring : クエリ結果のフレームを示す文字列
            return      : フレームの実体
        '''
        return None

